package com.example.javabasic.spring.proxy.demo2;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

//动态代理类

/**
 * 必须实现jdk代理的 invocationHandler 接口,调用目标类的方法,并将返回值转为目标类的类型
 */
public class ProxyHandler implements InvocationHandler {
    //目标对象,
    private Object object;
    //构造此类的时候要将目标类传入进来
    public ProxyHandler(Object object){
        this.object = object;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("动态代理执行方法前--"+method.getName());
        //TODO 此处可执行功能增强
        Object obj = method.invoke(object,args);//执行目标方法
        System.out.println("动态代理执行方法后--"+method.getName());
        //TODO 此处可执行功能增强
        return obj;
    }
}
